package com.shujia

object Demo6Class {
  def main(args: Array[String]): Unit = {


    //创建对象,  如果构造函数没有参数()可以不写
    val stu: Student = new Student("001", "张三", 23)

    println(stu)

    stu.setId("002")

    println(stu.getId)


    println("=" * 100)

    //使用重载构造方法创建对象
    val stu2: Student = new Student("004", "李四")


    println(stu2)


  }
}

/**
  * 默认构造函数，如果加了参数，就没有无参构造函数了
  *
  */
class Student(id: String, name: String, age: Int) {

  /**
    * 默认构造函数的方法体，
    * 在创建对象的时候会执行{}中间的所有代码
    *
    */
  println("默认构造函数")


  /**
    * 重载构造方法
    *
    */

  def this(id: String, name: String) {
    //第一行需要显示调用默认构造方法
    this(id, name, 0)
    println("重载构造方法")

  }


  //类的属性
  private var _id: String = id
  val _name: String = name
  val _age: Int = age


  //重写父类的方法
  override def toString: String = {

    //scala中字符串拼接
    s"Student(${_id}, ${_name}, ${_age})"
  }


  //定义方法
  def getId: String = {
    return _id
  }

  def setId(id: String): Unit = {
    _id = id
  }


}
